perm filename UCODE[S1,ALS]1 blob sn#419039 filedate 1979-02-16 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	Classified list of changes from PCODE to UCODE
C00006 00003	UCODE instructions with no PCODE equivalent
C00007 00004	U_OPCODE = (
C00012 00005	AND,BGN,CHR,DIF,FJP,FLO,FLT,INN,INT,IOR,IXA,LCA,LDC,LOC,MOV,NEW,NOT,ODD,ORD,PAR,SGS,STP,TRC,UNI,
C00013 00006	Suggested coordination scheme for PCODE to UCODE conversion
C00017 00007		Proposed code record
C00021 ENDMK
C⊗;
Classified list of changes from PCODE to UCODE

( * preceeding indicates fixed by ALS)

  2 PCODES	into		1 UCODE with data type as operand
ABI	ABR				ABS I	ABS R
ADI	ADR				ADD I	ADD R
DVI	DVR				DIV I	DIV R
MPI	MPR				MPY I	MPY R
NGI	NGR				NEG I	NEG R

  2 PCODES	into		1 UCODE with block # distinction

LDO t,off				LOD t m 1 off len
LOD t,lev,off				LOD t m blkno off len

SRO t,off				STR t m 1 off len
STR t,lev,off				STR t m blkno off len

LAO off					LDA m 1 off len
LDA lev,off				LDA m blkno off len


  1 PCODE	into			 	UCODES pair
CHK t,lb,ub				CHKL t lb	CHKU t ub

  1 PCODE	into	UCODE pair for	 direct   and  indirect relational
EQU t,len				EQU t len	IEQU t len
GEQ t,len				GWQ t len	IGEQ t len
GRT t,len				GRT t len	IGRT t len
LEQ t,len				LEQ t len	ILEQ t len
LES t,len				LES t len	ILES t len
NEQ t,len				NEQ t,len	INEQ t len

  1 PCODE	replaced by       more than 1 UCODE

DEF len					DEF M len
					END uproc

ENT t,lev,ds,id,g,f,d			ENT t level blkno push pop pass
					LEX 1 blk
					LEX 2 blk
					...
					PSTR t m blkno off len
					PSTR t m blkno off len
					...

RET t					PLOD t m blkno off len
					RET

SAV					UNK 0 0 SAV
					STO A 0 len

XJP label				CHKL I 0
					CHKH I value
					XJP label
					...
					...
					CLAB size


PCODE		into		UNK instruction with operand

RST					UNK 0 0 RST
SST t,proc,lev,2,3,4,5			UNK 0 0 SST t,proc,lev,2,3,4,5
TOF					UNK 0 0 TOF
TON					UNK O O TON

PCODE	with different operand order	   UCODE
CSP sproc				CSP t sproc push pop
CUP t,nprmfl,uproc			CUP t blkmo uproc push pop nprmfl

		See RLS for difference
MST lev,fpsiz,rpsiz			MST level fpsiz rpsiz


		Extra Operand added

IND t,off		       		IND t off len
*LAB					LAB 0

		Replace comma by space
*DEC t,off				DEC t off
*INC t,off				INC t off

		No change
*	AND
*	BGN value
*	CHR
*	DIF
*	FJP label
*	FLO
*	FLT
*	INN
*	INT
*	IOR
*	IXA off
*	LCA string
*	LDC
*	LOC off
*	MOV len
*	NEW len
*	NOT
*	ODD
*	ORD
*	PAR t
*	SGS
*	STP
*	TRC
*	UNI

*	Fixed by ALS
UCODE instructions with no PCODE equivalent

CHKN
CHKT
CLAB count
COMM
DEAD mt blkn off len
DMD dt
DOA mt blkn off len
DUP dt
ENT dt level blkn pop push
IGEQ dt len
IGRT dt len
ILES dt len
LEX level blkn
LIVE mt blkn off len
MDEF mt len min max dtlist
MUS
NSTR dt mt blkn off len
OPTN dt off
PLOD dt mt blkn off len
PSTR dt mt blkn off len
SUB dt
SWP dt1 dt2
SYM dt mt blkn off len
YJP lbl
TYP dt
U_OPCODE = (
    UABS , UADD , UAND , UBGN , UCHKF, UCHKH, UCHKL, UCHKN,
    UCHKT, UCHR , UCLAB, UCOMM, UCSP , UCUP , UDEAD, UDEC ,
    UDEF , UDIF , UDIV , UDMD , UDOA , UDUP , UEND , UENT ,
    UEQU , UFJP , UFLO , UFLT , UGEQ , UGRT , UIEQU, UIGEQ,
    UIGRT, UILEQ, UILES, UINC , UIND , UINEQ, UINN , UINT ,
    UIOR , UIXA , ULAB , ULCA , ULDA , ULDC , ULEQ , ULES ,
    ULEX , ULIVE, ULOC , ULOD , UMDEF, UMOD , UMOV , UMPY ,
    UMST , UMUS , UNEG , UNEQ , UNEW , UNOT , UNSTR, UODD ,
    UORD , UOPTN, UPAR , UPLOD, UPSTR, URET , USGS , USQR ,
    USTO , USTP , USTR , USUB , USWP , USYM , UTJP , UTRC ,
    UTYP , UUJP , UUNI , UUNK , UXJP );

ENTER_OPC ('ABS ', UABS);	ENTER_OPC ('ADD ', UADD);
ENTER_OPC ('AND ', UAND);	ENTER_OPC ('BGN ', UBGN);
ENTER_OPC ('CHKF', UCHKF);	ENTER_OPC ('CHKH', UCHKH);
ENTER_OPC ('CHKL', UCHKL);	ENTER_OPC ('CHKN', UCHKN);
ENTER_OPC ('CHKT', UCHKT);	ENTER_OPC ('CHR ', UCHR);
ENTER_OPC ('CLAB', UCLAB);	ENTER_OPC ('COMM', UCOMM);
ENTER_OPC ('CSP ', UCSP);	ENTER_OPC ('CUP ', UCUP);
ENTER_OPC ('DEAD', UDEAD);	ENTER_OPC ('DEC ', UDEC);
ENTER_OPC ('DEF ', UDEF);	ENTER_OPC ('DIF ', UDIF);
ENTER_OPC ('DIV ', UDIV);	ENTER_OPC ('DMD ', UDMD);
ENTER_OPC ('DOA ', UDOA);	ENTER_OPC ('DUP ', UDUP);
ENTER_OPC ('END ', UEND);	ENTER_OPC ('ENT ', UENT);
ENTER_OPC ('EQU ', UEQU);	ENTER_OPC ('FJP ', UFJP);
ENTER_OPC ('FLO ', UFLO);	ENTER_OPC ('FLT ', UFLT);
ENTER_OPC ('GEQ ', UGEQ);	ENTER_OPC ('GRT ', UGRT);
ENTER_OPC ('IEQU', UIEQU);	ENTER_OPC ('IGEQ', UIGEQ);
ENTER_OPC ('IGRT', UIGRT);	ENTER_OPC ('ILEQ', UILEQ);
ENTER_OPC ('ILES', UILES);	ENTER_OPC ('INC ', UINC);
ENTER_OPC ('IND ', UIND);	ENTER_OPC ('INEQ', UINEQ);
ENTER_OPC ('INN ', UINN);	ENTER_OPC ('INT ', UINT);
ENTER_OPC ('IOR ', UIOR);	ENTER_OPC ('IXA ', UIXA);
ENTER_OPC ('LAB ', ULAB);	ENTER_OPC ('LCA ', ULCA);
ENTER_OPC ('LDA ', ULDA);	ENTER_OPC ('LDC ', ULDC);
ENTER_OPC ('LEQ ', ULEQ);	ENTER_OPC ('LES ', ULES);
ENTER_OPC ('LEX ', ULEX);	ENTER_OPC ('LIVE', ULIVE);
ENTER_OPC ('LOC ', ULOC);	ENTER_OPC ('LOD ', ULOD);
ENTER_OPC ('MDEF', UMDEF);	ENTER_OPC ('MOD ', UMOD);
ENTER_OPC ('MOV ', UMOV);	ENTER_OPC ('MPY ', UMPY);
ENTER_OPC ('MST ', UMST);	ENTER_OPC ('MUS ', UMUS);
ENTER_OPC ('NEG ', UNEG);	ENTER_OPC ('NEQ ', UNEQ);
ENTER_OPC ('NEW ', UNEW);	ENTER_OPC ('NOT ', UNOT);
ENTER_OPC ('NSTR', UNSTR);	ENTER_OPC ('ODD ', UODD);
ENTER_OPC ('ORD ', UORD);	ENTER_OPC ('OPTN', UOPTN);
ENTER_OPC ('PAR ', UPAR);	ENTER_OPC ('PLOD', UPLOD);
ENTER_OPC ('PSTR', UPSTR);	ENTER_OPC ('RET ', URET);
ENTER_OPC ('SGS ', USGS);	ENTER_OPC ('SQR ', USQR);
ENTER_OPC ('STO ', USTO);	ENTER_OPC ('STP ', USTP);
ENTER_OPC ('STR ', USTR);	ENTER_OPC ('SUB ', USUB);
ENTER_OPC ('SWP ', USWP);	ENTER_OPC ('SYM ', USYM);
ENTER_OPC ('TJP ', UTJP);	ENTER_OPC ('TRC ', UTRC);
ENTER_OPC ('TYP ', UTYP);	ENTER_OPC ('UJP ', UUJP);
ENTER_OPC ('UNI ', UUNI);	ENTER_OPC ('UNK ', UUNK);
ENTER_OPC ('XJP ', UXJP);	
AND,BGN,CHR,DIF,FJP,FLO,FLT,INN,INT,IOR,IXA,LCA,LDC,LOC,MOV,NEW,NOT,ODD,ORD,PAR,SGS,STP,TRC,UNI,
Suggested coordination scheme for PCODE to UCODE conversion

Three lists of U_OPCODEs will be maintained, two of them commented out, as
shown on the attached sheet.  One list will be the proposed UCODE list
that is being implemented.  Of the two commented-out lists, initially, one
will be the existing P_OPCODE list and the other will be a duplicate of the
proposed U_OPCODE list.

As PCODEs are replaced by UCODEs in SOPA the individual PCODEs in the
commented-out list will be moved to the end of the list after the initials
of the person doing the replacement. To guard against the possibility of
being interrupted while making the substitution, one should add an
asterisk * to the transfered instruction and only remove this * when the
work is completed.

If the replacing UCODE is never needed in connection with some other PCODE
(example: UNK, which is used for several PCODEs) then this UCODE is
removed from the beginning of the commented-out list and moved to the end
of the list, again after the initials of the person doing the work.  If
the UCODE is used for several PCODEs and some substitutions are still to
be made, then the UCODE is added to the initialed list but it is not
removed from the beginning list.  Again an asterisk * should be used to
mark work in progress.

By using this technique, we will always have a complete list of the PCODEs
that are yet to be converted and a list of unimplemented UCODEs.  When
both lists have been exausted, the job will be done.

One added suggestion: Since some UCODEs are 3 characters in length and some
are 4 and since this will cause some complications, it seems better to pad
the 3-character codes with a terminating space and then treat all codes
internally as 4-character names.  This will require that MNAM and all its
derivatives be typed as CHAR4 not CHAR3 and a few procedures will have to
be changed as shown by a typical example below.  Since extra spaces are
permitted in Ucode, this should cause no trouble.

    begin (*READNXTINST*)
    if INPUT↑ <> ' ' then READNAM (NAM0);
    repeat  get(INPUT)	until INPUT↑ <> ' ';
(*  READ(MNEM);  *)
    READ(CH); MNEM[1] := CH;
    READ(CH); MNEM[2] := CH;
    READ(CH); MNEM[3] := CH;
    if INPUT↑ <> ' ' then READ(CH) else CH := ' ';		(* 7FEB79 ALS*)
    MNEM[4] := CH;						(*ALS*)
    OPC := MNEM_TO_OPC(MNEM);

	Proposed code record

U_OPCODE = (
    UABS , UADD , UAND , UBGN , UCHKF, UCHKH, UCHKL, UCHKN,
    UCHKT, UCHR , UCLAB, UCOMM, UCSP , UCUP , UDEAD, UDEC ,
    UDEF , UDIF , UDIV , UDMD , UDOA , UDUP , UEND , UENT ,
    UEQU , UFJP , UFLO , UFLT , UGEQ , UGRT , UIEQU, UIGEQ,
    UIGRT, UILEQ, UILES, UINC , UIND , UINEQ, UINN , UINT ,
    UIOR , UIXA , ULAB , ULCA , ULDA , ULDC , ULEQ , ULES ,
    ULEX , ULIVE, ULOC , ULOD , UMDEF, UMOD , UMOV , UMPY ,
    UMST , UMUS , UNEG , UNEQ , UNEW , UNOT , UNSTR, UODD ,
    UORD , UOPTN, UPAR , UPLOD, UPSTR, URET , USGS , USQR ,
    USTO , USTP , USTR , USUB , USWP , USYM , UTJP , UTRC ,
    UTYP , UUJP , UUNI , UUNK , UXJP );

(* Work in progress lists

P_OPCODE = (
    PABI, PABR, PADI, PAND, PBGN, PCHK, PCHR, PCSP,
    PCUP, PDEC, PDEF, PDIF, PDVI, PENT, PEOF, PFJP,
    PFLO, PFLT, PINC, PIND, PINN, PINT, PIOR, PIXA,
    PLAB, PLAO, PLCA, PLDA, PLDC, PLDO, PLOC, PLOD,
    PMOD, PMOV, PMPI, PMST, PNEW, PNGI, PNGR, PNOT,
    PODD, PORD, PPAR, PPRE, PRET, PRST, PSAV, PSBI,
    PSGS, PSQI, PSQR, PSRO, PSST, PSTO, PSTP, PSTR,
    PSUC, PTOF, PTON, PTRC, PUJP, PUNI, PXJP, PADR,
    PSBR, PMPR, PDVR, PEQU, PNEQ, PGEQ, PGRT, PLEQ,
    PLES);
ALS list

PN list

U_OPCODE = (
    UABS , UADD , UAND , UBGN , UCHKF, UCHKH, UCHKL, UCHKN,
    UCHKT, UCHR , UCLAB, UCOMM, UCSP , UCUP , UDEAD, UDEC ,
    UDEF , UDIF , UDIV , UDMD , UDOA , UDUP , UEND , UENT ,
    UEQU , UFJP , UFLO , UFLT , UGEQ , UGRT , UIEQU, UIGEQ,
    UIGRT, UILEQ, UILES, UINC , UIND , UINEQ, UINN , UINT ,
    UIOR , UIXA , ULAB , ULCA , ULDA , ULDC , ULEQ , ULES ,
    ULEX , ULIVE, ULOC , ULOD , UMDEF, UMOD , UMOV , UMPY ,
    UMST , UMUS , UNEG , UNEQ , UNEW , UNOT , UNSTR, UODD ,
    UORD , UOPTN, UPAR , UPLOD, UPSTR, URET , USGS , USQR ,
    USTO , USTP , USTR , USUB , USWP , USYM , UTJP , UTRC ,
    UTYP , UUJP , UUNI , UUNK , UXJP );

ALS list

PN list

*)